home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / socket / miami3 / miamisdk / netinclude / net / radix.h < prev    next >
C/C++ Source or Header  |  1998-05-24  |  1KB  |  43 lines

  1. #ifndef _NET_RADIX_H_
  2. #define    _NET_RADIX_H_
  3.  
  4. #ifndef _SYS_TYPES_H_
  5. #include <sys/types.h>
  6. #endif
  7.  
  8. /*
  9.  * Radix search tree node layout.
  10.  */
  11.  
  12. struct radix_node {
  13.     struct    radix_mask *rn_mklist;    /* list of masks contained in subtree */
  14.     struct    radix_node *rn_p;    /* parent */
  15.     short    rn_b;            /* bit offset; -1-index(netmask) */
  16.     char    rn_bmask;        /* node: mask for bit test*/
  17.     u_char    rn_flags;        /* enumerated next */
  18. #define RNF_NORMAL    1        /* leaf contains normal route */
  19. #define RNF_ROOT    2        /* leaf is root leaf for tree */
  20. #define RNF_ACTIVE    4        /* This node is alive (for rtfree) */
  21.     union {
  22.         struct {            /* leaf only data: */
  23.             caddr_t    rn_Key;        /* object of search */
  24.             caddr_t    rn_Mask;    /* netmask, if present */
  25.             struct    radix_node *rn_Dupedkey;
  26.         } rn_leaf;
  27.         struct {            /* node only data: */
  28.             long    rn_Off;        /* where to start compare */
  29.             struct    radix_node *rn_L;/* progeny */
  30.             struct    radix_node *rn_R;/* progeny */
  31.         } rn_node;
  32.     }        rn_u;
  33. };
  34.  
  35. #define rn_dupedkey rn_u.rn_leaf.rn_Dupedkey
  36. #define rn_key rn_u.rn_leaf.rn_Key
  37. #define rn_mask rn_u.rn_leaf.rn_Mask
  38. #define rn_off rn_u.rn_node.rn_Off
  39. #define rn_l rn_u.rn_node.rn_L
  40. #define rn_r rn_u.rn_node.rn_R
  41.  
  42. #endif /* _RADIX_H_ */
  43.